home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / program / gnudev1.zip / emx / doc / NEWS.GCC < prev    next >
Text File  |  1996-07-24  |  29KB  |  740 lines

  1. Noteworthy changes in GCC version 2.7.2.1:
  2.  
  3. This release fixes some serious bugs discovered since the 2.7.2 release.
  4.  
  5. Noteworthy changes in GCC version 2.7.2:
  6.  
  7. A few bugs have been fixed (most notably the generation of an
  8. invalid assembler opcode on some RS/6000 systems).
  9.  
  10. Noteworthy changes in GCC version 2.7.1:
  11.  
  12. This release fixes numerous bugs (mostly minor) in GCC 2.7.0, but
  13. also contains a few new features, mostly related to specific targets.
  14.  
  15. Major changes have been made in code to support Windows NT.
  16.  
  17. The following new targets are supported:
  18.  
  19.     2.9 BSD on PDP-11
  20.     Linux on m68k
  21.     HP/UX version 10 on HP PA RISC (treated like version 9)
  22.     DEC Alpha running Windows NT
  23.  
  24. When parsing C, GCC now recognizes C++ style `//' comments unless you
  25. specify `-ansi' or `-traditional'.
  26.  
  27. The PowerPC System V targets (powerpc-*-sysv, powerpc-*-eabi) now use the
  28. calling sequence specified in the System V Application Binary Interface
  29. Processor Supplement (PowerPC Processor ABI Supplement) rather than the calling
  30. sequence used in GCC version 2.7.0.  That calling sequence was based on the AIX
  31. calling sequence without function descriptors.  To compile code for that older
  32. calling sequence, either configure the compiler for powerpc-*-eabiaix or use
  33. the -mcall-aix switch when compiling and linking.
  34.  
  35. Noteworthy changes in GCC version 2.7.0:
  36.  
  37. GCC now works better on systems that use ".obj" and ".exe" instead of
  38. ".o" and no extension.  This involved changes to the driver program,
  39. gcc.c, to convert ".o" names to ".obj" and to GCC's Makefile to use
  40. ".obj" and ".exe" in filenames that are not targets.  In order to
  41. build GCC on such systems, you may need versions of GNU make and/or
  42. compatible shells.  At this point, this support is preliminary.
  43.  
  44. Object file extensions of ".obj" and executable file extensions of
  45. ".exe" are allowed when using appropriate version of GNU Make.
  46.  
  47. Numerous enhancements were made to the __attribute__ facility including
  48. more attributes and more places that support it.  We now support the
  49. "packed", "nocommon", "noreturn", "volatile", "const", "unused",
  50. "transparent_union", "constructor", "destructor", "mode", "section",
  51. "align", "format", "weak", and "alias" attributes.  Each of these
  52. names may also be specified with added underscores, e.g., "__packed__".
  53. __attribute__ may now be applied to parameter definitions, function
  54. definitions, and structure, enum, and union definitions.
  55.  
  56. GCC now supports returning more structures in registers, as specified by
  57. many calling sequences (ABIs), such as on the HP PA RISC.
  58.  
  59. A new option '-fpack-struct' was added to automatically pack all structure
  60. members together without holes.
  61.  
  62. There is a new library (cpplib) and program (cppmain) that at some
  63. point will replace cpp (aka cccp).  To use cppmain as cpp now, pass
  64. the option CCCP=cppmain to make.  The library is already used by the
  65. fix-header program, which should speed up the fixproto script.
  66.  
  67. New options for supported targets:
  68.  
  69.     GNU on many targets.
  70.     NetBSD on MIPS, m68k, VAX, and x86.
  71.     LynxOS on x86, m68k, Sparc, and RS/6000.
  72.     VxWorks on many targets.
  73.  
  74.     Windows/NT on x86 architecture.  Initial support for Windows/NT on Alpha
  75.     (not fully working).
  76.  
  77.     Many embedded targets, specifically UDI on a29k, aout, coff, elf,
  78.     and vsta "operating systems" on m68k, m88k, mips, sparc, and x86.
  79.  
  80. Additional support for x86 (i386, i486, and Pentium):
  81.  
  82.     Work with old and new linkers for Linux-based GNU systems,
  83.     supporting both a.out and ELF.
  84.     FreeBSD on x86.
  85.     Stdcall convention.
  86.     -malign-double, -mregparm=, -malign-loops= and -malign-jumps=  switches.
  87.     On ISC systems, support -Xp like -posix.
  88.  
  89. Additions for RS/6000:
  90.  
  91.     Instruction scheduling information for PowerPC 403.
  92.     AIX 4.1 on PowerPC.
  93.     -mstring and -mno-string.
  94.     -msoft-float and floating-point emulation included.
  95.     Preliminary support for PowerPC System V.4 with or without the GNU as.
  96.     Preliminary support for EABI.
  97.     Preliminary support for 64-bit systems.
  98.     Both big and little endian systems.
  99.  
  100. New features for MIPS-based systems:
  101.  
  102.     r4650.
  103.     mips4 and R8000.
  104.     Irix 6.0.
  105.     64-bit ABI.
  106.     Allow dollar signs in labels on SGI/Irix 5.x.
  107.  
  108. New support for HP PA RISC:
  109.  
  110.     Generation of PIC (requires binutils-2.5.2.u6 or later).
  111.     HP-UX version 9 on HP PA RISC (dynamically links even with -g).
  112.     Processor variants for HP PA RISC: 700, 7100, and 7100LC.
  113.     Automatic generation of long calls when needed.
  114.     -mfast-indirect-calls for kernels and static binaries.
  115.  
  116.     The called routine now copies arguments passed by invisible reference,
  117.     as required by the calling standard.
  118.  
  119. Other new miscellaneous target-specific support:
  120.  
  121.     -mno-multm on a29k.
  122.     -mold-align for i960.
  123.     Configuration for "semi-hosted" ARM.
  124.     -momit-leaf-frame-pointer for M88k.
  125.     SH3 variant of Hitachi Super-H and support both big and little endian.
  126.  
  127. Changes to Objective-C:
  128.  
  129.     Bare-bones implementation of NXConstantString has been added,
  130.     which is invoked by the @"string" directive.
  131.  
  132.     Class * has been changed to Class to conform to the NextSTEP and
  133.     OpenStep runtime.
  134.  
  135.     Enhancements to make dynamic loading easier.
  136.  
  137.     The module version number has been updated to Version 7, thus existing
  138.     code will need to be recompiled to use the current run-time library.
  139.  
  140. GCC now supports the ISO Normative Addendum 1 to the C Standard.
  141. As a result:
  142.  
  143.     The header <iso646.h> defines macros for C programs written
  144.     in national variants of ISO 646.
  145.  
  146.     The following digraph tokens are supported:
  147.     <:    :>    <%    %>    %:    %:%:
  148.     These behave like the following, respectively:
  149.     [    ]    {    }    #    ##
  150.  
  151.     Digraph tokens are supported unless you specify the `-traditional'
  152.     option; you do not need to specify `-ansi' or `-trigraphs'.  Except
  153.     for contrived and unlikely examples involving preprocessor
  154.     stringizing, digraph interpretation doesn't change the meaning of
  155.     programs; this is unlike trigraph interpretation, which changes the
  156.     meanings of relatively common strings.
  157.  
  158.     The macro __STDC_VERSION__ has the value 199409L.
  159.  
  160.   As usual, for full conformance to the standard, you also need a
  161.   C library that conforms.
  162.  
  163. The following lists changes that have been made to g++.  If some
  164. features mentioned below sound unfamiliar, you will probably want to
  165. look at the recently-released public review copy of the C++ Working
  166. Paper.  For PostScript and PDF (Adobe Acrobat) versions, see the
  167. archive at ftp://research.att.com/dist/stdc++/WP.  For HTML and ASCII
  168. versions, see ftp://ftp.cygnus.com/pub/g++.  On the web, see
  169. http://www.cygnus.com/~mrs/wp-draft.
  170.  
  171. The scope of variables declared in the for-init-statement has been changed
  172. to conform to http://www.cygnus.com/~mrs/wp-draft/stmt.html#stmt.for; as a
  173. result, packages such as groff 1.09 will not compile unless you specify the
  174. -fno-for-scope flag.  PLEASE DO NOT REPORT THIS AS A BUG; this is a change
  175. mandated by the C++ standardization committee.
  176.  
  177. Binary incompatibilities:
  178.  
  179.     The builtin 'bool' type is now the size of a machine word on RISC targets,
  180.     for code efficiency; it remains one byte long on CISC targets.
  181.  
  182.     Code that does not use #pragma interface/implementation will most
  183.     likely shrink dramatically, as g++ now only emits the vtable for a
  184.     class in the translation unit where its first non-inline, non-abstract
  185.     virtual function is defined.
  186.  
  187.     Classes that do not define the copy constructor will sometimes be
  188.     passed and returned in registers.  This may illuminate latent bugs in
  189.     your code.
  190.  
  191. Support for automatic template instantiation has *NOT* been added, due
  192. to a disagreement over design philosophies.
  193.  
  194. Support for exception handling has been improved; more targets are now
  195. supported, and throws will use the RTTI mechanism to match against the
  196. catch parameter type.  Optimization is NOT SUPPORTED with
  197. -fhandle-exceptions; no need to report this as a bug.
  198.  
  199. Support for Run-Time Type Identification has been added with -fr